//基础
//公共请求参数
interface CommonParams {
  pageNo: number // 当前页码
  pageSize: number // 每页显示行数
}

//公共返回数据
export interface CommonResponse {
  code: string //响应码,0:成功,否则异常
  msg: string //响应信息
}
//分页
export interface CommonPagination {
  pageNo: number // 当前页码
  pageSize: number // 每页显示行数
}
//列表返回
export interface CommonList<T> {
  list: T[]
}
//公共抽屉
export interface EditDrawerProps {
  open: boolean //显示/隐藏
  title: string //抽屉名
  onClose: () => void //关闭抽屉
}
//任意参数
export interface AnyProp {
  [propName: string]: any
}

export type Optional<T, K extends keyof T> = Omit<T, K> &
  Partial<Pick<T, K>>

export interface CommonFlag {
  flag: boolean
}

export interface CommonResponseData<T> {
  data: T
}

interface CommonResponsePage<T> extends CommonParams {
  count: number //总数
  list: T
  pages: number //总页数
}

//分页响应
export type PageResponse<T> = CommonResponse &
  CommonResponseData<CommonResponsePage<T[]>>

//flag响应
export type FlagResponse = CommonResponse &
  CommonResponseData<CommonFlag>

//其他类型响应
export type OtherResponse<T> = CommonResponse &
  CommonResponseData<T>

// 文件流响应
export type BlogResponse = Blob
